오늘부터는 B-Tree에 대한 설명과 내 코드의 전반적인 설명을 마치고, 매일 새로 짜거나 수정한 코드들에 대해 정리해보려고 한다. 내가 짠 B-Tree 관련 코드들은 내 깃헙 레포지토리1를 참고하면 된다.
제목을 읽어보면 알겠지만, 이번 일지가 B-Tree 프로젝트 개발일지 ‘1일차’이다. 분명 코드를 짜기 시작한 것은 훨씬 전이긴 하지만, 이렇게 이름을 붙인건 개발일지를 작성한 것은 1일차이기 때문이다.
다른 개인 프로젝트를 진행할 때도 이런 식으로 진행할 것이다. 그러나 혼선을 줄이기 위해 코드 작성을 시작하기 전에 프로젝트에 필요한 배경지식들을 우선 정리하고 코드를 시작하는 동시에 개발일지를 시작할 것이다.
이제 본격적으로 내가 작성한 BKeyList 코드들에 대한 내용을 정리해보겠다. 우선 BKeyList에 내가 만들어둔 멤버 함수들은 다음과 같다.
오늘 새벽에 수정하여 push한 코드들의 수정사항은 다음과 같다.
insert 함수 책임 분리: 기존의 코드에서는 insert 함수의 반환값을 통해 노드의 분할이 필요한지 여부를 함께 반환하도록 했지만, insert가 삽입하는 역할만 수행하도록 splitRequired라는 함수를 따로 만들어 기능을 분리하였다.
findIndex 함수 수정: 기존의 findIndex 함수는 재귀함수였으나, 반복문 이용한 이분탐색을 수행하도록 수정하였다.
BKeyList 테스트벤치 삭제 부분 추가: BKeyList가 제대로 작동하는지 확인하기 위한 테스트벤치의 코드에서 삭제도 시험해볼 수 있게 수정하였다. 아직까지는 제대로 작동하는 것으로 확인되었다.
BKeyList는 프로젝트 초기부터 가장 집중적으로 만들었던 코드로, 거의 완성되었다고 판단하여 각 함수에 대한 설명을 제공하는 동시에 수정사항도 간단하게 언급하였다. 그러나, BNode나 BTree 클래스의 경우에는 아직 함수들이 충분히 구현되지 않아 글을 작성하는 방식이 조금 달라질 것이다.
일지별로 구현하고자 하는 각 기능들과 관련된 함수들을 위주로 다룰 것이며, 수정사항에서 코드의 변경점을 직접 그 코드를 삽입하여 함께 언급하는 방식으로 개발일지를 진행할 것이다.
드디어 본격적으로 개발일지가 시작된다는 사실에 가슴이 두근거린다. 이 두근거림을 잊지 말고 열심히 일해야겠다. 오늘의 개발은 여기까지!
1: https://github.com/ChoiCube84/B-Tree-cpp-implementation